Aquest article té una finalitat divulgativa per a qui no estigui familiaritzat amb el desenvolupament del programari d'alt nivell. També és de lectura recomanada per a professionals, atès que pot emfatitzar usos de l'UML eventualment subestimats o passats de llarg.
Repassarem en primer lloc el concepte de Programació Orientada a Objectes, coneguda pel seu acrònim anglès OOP (Object Oriented Programming).
Seguidament descriurem en el Llenguatge Unificat de Modelatge, conegut també pel seu acrònim UML (Unified Modeling Language) com a notació de OOP.
En tercer lloc, subratllarem la importància del model en una aplicació programari.
Finalment, farem èmfasi en l'UML com a eina de desenvolupament del programari, orientat o no a objectes.
L'orientació a objectes (OOP)
A l'hora de construir un programa, una manera (un paradigma) de fer-ho és imaginar-se que, en execució, un programa no és més que un conjunt d'entitats, objectes, que interactuen entre ells, enviant-se missatges.
Un objecte guarda informació interna, i ofereix diferents mètodes que poden ser invocats per altres objectes o mitjançant un esdeveniment que produeixi que s'executin.
Així, per exemple, un objecte representant a un pacient d'un hospital pot guardar internament la data de naixement, i oferir un mètode que retorni la seva edat. El mètode faria una resta cada vegada que se li invoca, retornant el nombre d'anys que han transcorregut des del naixement de l'objecte-pacient. Seguint amb el mateix exemple, podríem voler introduir el fet que objecte-pacient A és el germà de l'objecte-pacient B, cosa que es dispararia per exemple en fer clic en un botó d'una web.
UML va néixer en els 90 com a estàndard per a representar l'OOP.
El llenguatge unificat de modelatge (UML)
Quan es desenvolupa un programari en el qual hi ha o bé un número molt alt d'entitats interrelacionades, o bé un número no gaire gran però amb una complexitat apreciable en la manera en com es relacionen, resulta pràcticament imprescindible representar-se aquest microunivers d'objectes, de les seves relacions, de com interactuaran entre ells, de com es desenvoluparà la seqüència d'esdeveniments quan vulguem que el programari implementi cadascuna de les situacions. Per a poder tractar amb això, UML ofereix moltes eines, de les quals destacarem tres:
-
El diagrama de casos d'ús: representar cada cosa que pugui voler fer-se amb el programari, per part de quin actor.
Exemples de casos d'ús per a una botiga online: - "Alta article": un usuari administrador d'una botiga online ("actor admin") ha de poder donar d'alta un nou article - "Pagar": un usuari comprador ("actor comprador") hauria de poder procedir a pagar, una vegada plena la cistella de la compra. Aquest cas d'ús pot convenir representar-lo inclòs en un cas d'ús més genèric anomenat "Comprar".
-
El diagrama estàtic de classes: representar quines entitats cal contemplar, i què guardar de cadascuna, i quines relacions amb altres entitats poden tenir.
Exemples de classes per a una botiga online: - "Article": representa un article de la botiga. Hauria de tenir com a mínim un nom, un conjunt de fotos relacionades, i un preu segons qui sigui el comprador (si és estranger pot per exemple pagar un impost diferent) "Comprador": representa un comprador, que és un usuari que a més pot comprar. Un objecte comprador pot tenir definida una relació de padrinatge amb un altre objectes-comprador, de tal forma que quan compri el seu fill, ell incrementi un comptador amb el qual pugui tenir un bo (seria un objecte-bo, que també cal representar)
-
Els diagrames de seqüència: representar la seqüència d'esdeveniments quan es duu a terme un cas d'ús.
Exemple per a pagar en una botiga online: La seqüència per a pagar pot ser primer introduir la targeta i després saltar a una web externa que sigui l'entitat bancària, o saltar contant que ja en la web externa se li demanarà aquest número (més convenient en general, per tractar-se d'informació sensible).
El model en un sistema programari
Un sistema programari requereix representar-se d'alguna manera el més simple possible, i el més completa i clarament possible, la informació amb la qual ha de tractar. Una vegada és clar com representar-se aquesta informació, podem programar de moltes maneres el com modificar-la.
Un bon model té previst ja en la seva concepció el que en un futur pugui ampliar-se sense ser molt traumàtic (sense haver de desfer/refer molta part del mateix). Per a això, l'enginyer de programari pacta amb l'usuari un model, abans de començar a programar. A aquest efecte dibuixa, en una pissarra, o representa en fulls de càlcul dades reals, busca situacions i com es guardarien en aquest model. Té la gran responsabilitat, compartida amb l'usuari, de caure en el compte del qual es requereix guardar, i del que és possible que es vulgui guardar en probables ampliacions del programari.
El model és el cor d'un programari. Tots els mètodes més o menys bonics, còmodes, enginyosos per a modificar-ho, per a tractar amb ell, ho fan útil. Però un sistema programari és, en essència, una manera de tractar informació.
L'UML com a eina per al desenvolupament
L'estàndard UML és una eina més en la taula de qualsevol enginyer del programari. És tant o més important que la pantalla, el teclat o l'ordinador. És mitjançant la notació UML (o una notació alternativa) amb la qual es concep el programari. Després, queda implementar-ho, fer-ho realitat.
En el moment en què un sistema programari està expressat mitjançant UML disposem del que per a un arquitecte serien els plànols d'un edifici. No en va s'usa el terme arquitecte de programari o arquitectura programari. Qualsevol programador experimentat sap que no es pot comptar que aquests plans siguin exactament el que el programari serà, però sí que el representen amb la suficient exactitud per a poder desenvolupar-ho i mantenir-ho a un cost acceptable, això és, sense que refer molta part d'ell.
Encara que no s'utilitzi el paradigma d'orientació a objectes, UML continua sent potent com a representació d'un programari, per a representar tot el que pot passar i per a dividir el problema gran en problemes petits.
Lectures recomanades
-
Pàgina oficial d'UML: http://www.uml.org/
-
Per a una bona introducció a la OOP i al UML: "Especificación de sistemas software en UML" Dolors Costal, M. Ribera Sancho, Ernest Teniente. Edicions UPC, 2003. ISBN: 9788483017234